package biblioGraphiqueV2;
import javax.swing.JLabel;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JComboBox;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;

public class VueEmpruntExemplaireReserve extends Vue {
	private JComboBox comboBox;
	private JButton btnRechercher;
	private JButton btnAnnuler;
	private JButton btnAnnuler_1;
	private JButton btnEmprunter;
	private DefaultListModel model;
	private JList list;

	public VueEmpruntExemplaireReserve(Controleur controleur){
		super(controleur);
		setTitle("Emprunt d'un exemplaire réservé");
		setBounds(100, 100, 577, 340);
		getContentPane().setLayout(null);
		
		JLabel lblNumLecteur = new JLabel("Numéro du lecteur");
		lblNumLecteur.setBounds(77, 12, 119, 15);
		getContentPane().add(lblNumLecteur);
		
		btnRechercher = new JButton("Rechercher");
		btnRechercher.setBounds(302, 171, 107, 25);
		getContentPane().add(btnRechercher);
		btnRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().rechLecteur((String)list.getSelectedValue());}
		});
		
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.setBounds(421, 171, 107, 25);
		getContentPane().add(btnAnnuler);
		btnAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueEmpruntExemplaireReserve.this);}
		});
		
		JLabel lblExemplaireReserve = new JLabel("Exemplaires Réservés");
		lblExemplaireReserve.setBounds(54, 227, 142, 15);
		getContentPane().add(lblExemplaireReserve);
		
		btnEmprunter = new JButton("Emprunter");
		btnEmprunter.setBounds(302, 277, 107, 25);
		getContentPane().add(btnEmprunter);
		btnEmprunter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().ajouterEmpruntReserve((Reservation)comboBox.getSelectedItem(), (String)list.getSelectedValue());
			}
		});
		
		
		btnAnnuler_1 = new JButton("Annuler");
		btnAnnuler_1.setBounds(421, 277, 107, 25);
		getContentPane().add(btnAnnuler_1);
		btnAnnuler_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueEmpruntExemplaireReserve.this);}
		});
		
		comboBox = new JComboBox();
		comboBox.setBounds(221, 222, 307, 24);
		getContentPane().add(comboBox);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(214, 12, 142, 103);
		getContentPane().add(scrollPane);
		
		model = new DefaultListModel();
		alimenteLecAvecRes();
		list = new JList(model);
		list.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, new Color(0, 0, 0), null, null, null));
		list.setSelectionMode(0);
		scrollPane.setViewportView(list);
		

	}
	
	public void alimenteEmpRes(Lecteur lecteur){
		HashMap<Integer, Reservation> reservations;
		reservations = lecteur.getReservations();
		
		for (Reservation res : reservations.values()) {
			comboBox.addItem(res);
		}
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			list.setEnabled(true);
			btnRechercher.setEnabled(true);
			btnAnnuler.setEnabled(true);
			btnAnnuler_1.setEnabled(false);
			btnEmprunter.setEnabled(false);
			comboBox.setEditable(false);
			comboBox.setEnabled(false);
			break;
			}
		case inter1: {
			list.setEnabled(false);
			btnRechercher.setEnabled(false);
			btnAnnuler.setEnabled(false);
			btnAnnuler_1.setEnabled(true);
			
			if (comboBox.getItemCount() > 0){
				comboBox.setEnabled(true);	
				btnEmprunter.setEnabled(true);
			}
			
			break;
			}
		}
	}
	
	public JComboBox getComboBox(){
		return comboBox;
	}
	
	public void alimenteLecAvecRes(){
		HashMap<String, Lecteur> lec;
		lec = getControleur().getLecteurs();
		
		Vector<String> vec = new Vector<String>(); 

		for (String mapKey : lec.keySet()) {
			if(!(lec.get(mapKey).getReservations().isEmpty())){
				String num = lec.get(mapKey).getNumLecteur();
				vec.add(num);
			}
		}
		
		for(int i = vec.size()-1 ; i >= 0 ; i--)
		{
			model.addElement(vec.elementAt(i));
		}
	}	
	
}
